#!/usr/bin/env python
#-------------------------------python------------------rettaper2pt.py--#
#                                                                       #
#        Calcola l'equazione e disegna una retta per 2 punti            #
#                                                                       #
#--Daniele Zambelli----------------------------------------------2006---#

from pyplot import *

def cango(p0, p1):
  """Calcola il coefficiente angolare."""
  x0, y0 = p0
  x1, y1 = p1
  if x0==x1: return None
  else:      return (y0-y1)/(x0-x1)

def tnoto(p0, m):
  """Calcola il termine noto."""
  x0, y0 = p0
  if m==None: return x0
  else:       return y0-m*x0

def retta(p0, p1):
  """Calcola il polinomio dell'equazione della retta per p0 e p1."""
  m=cango(p0, p1)
  q=tnoto(p0, m)
  if m==None: return "x=%s" % q
  else:
    if q>0:   return "%s*x+%s" % (m, q)
    else:     return "%s*x%s" % (m, q)

def leggi(cosa, chi):
  """Legge in numero razionale."""
  return float(raw_input("scrivi l'%s di %s " % (cosa, chi)))

def leggi_x(chi):
  """Legge l'ascissa di un punto."""
  return leggi("ascissa", chi)

def leggi_y(chi):
  """Legge l'ordinata di un punto."""
  return leggi("ordinata", chi)

def leggi_coord(chi):
  """Legge le coordinate di un punto."""
  return leggi_x(chi), leggi_y(chi)

def demo():
  p0=leggi_coord("p0")
  p1=leggi_coord("p1")
  r=retta(p0, p1)
  piano=Plot("y="+r, 600, 400, 20, 20)
  piano.setwidth(3)
  piano.drawpoint(p0)
  piano.drawpoint(p1)
  piano.setwidth(1)
  piano.axes(True)
  piano.xy(r)
  piano.mainloop()
  
demo()
